iT邦幫忙

2023 iThome 鐵人賽

DAY 3
0
自我挑戰組

Python Discord Bot(DC機器人)系列 第 3

Python Discord Bot#3 - 架設Python Server

  • 分享至 

  • xImage
  •  

這篇開始之前,還是想先告知,
如果你本身就還不會程式語言,
想從這篇直接學習Python可能不是明智的選擇,
建議還是需要有些程式語言或開發基本的理解,
但如果想照著實作,
我也會盡力講解,
有不懂的可以google也可以在留言區留言,
能幫的我就幫,但我也是新手就是了ww


為什麼要架設Server??

我們這篇準備要架設的Server伺服器才是真正的機器人本體,
而上一篇 從DC官方後台建立的設定只是簡單註冊門面(像是登記攤位一樣),
所以我們註冊了機器人的帳號,
但事實上它現在還不會動。

架立簡單的Python環境

Step 1: 準備工具

開發工具: VScode

個人是使用VScode來開發,
它是非常輕量的程式編輯器,詳細的教學或使用方式可能要自行Google學習。

Python的版本

而Python在我一開始學習時就發現有「Python 2」與「Python 3」,
為了日後的開發,通常版本一定會選擇穩定版再來是最高版本,
而Python2未來也不會維護了,所以果斷選擇學習Python3。
檢查自己的Python 版本

> python --version  // 應該要3.x以上版本

推薦讀物:
Python2.x與3.x區別簡單說 參考
Python版本官方
使用Vscode寫Python 請參考@smallshawn95


Step 2:開發第一步

一開始請直接建立code想存放的資料夾位置後,「檔案總管」 -> 「開始資料夾」
※貼心提醒: 在程式中,資料夾的路徑盡量不要有中文的路徑,有時候,會造成不必要的麻煩或程式辨別問題。
https://ithelp.ithome.com.tw/upload/images/20230902/20106071995UKMMYtv.png
建立main.py檔案
https://ithelp.ithome.com.tw/upload/images/20230902/2010607138TUiZj0CC.png

下載套件

終端機在vscode呼叫方式: Ctrl+P
https://ithelp.ithome.com.tw/upload/images/20230903/20106071ooSuMSfF4T.png

python -m pip install -U discord.py
main.py檔案內容
# 導入 套件
import discord

# intents
intents = discord.Intents.default()
# client
client = discord.Client(intents=intents)

# event 事件處理
@client.event
async def on_ready():
  print(f"「{client.user}」已登入")

if __name__ == "__main__":
  client.run("你的Bot Token")

執行指令與結果
https://ithelp.ithome.com.tw/upload/images/20230903/20106071w2ONjtlJpi.png
而你也會看到機器人在你的伺服器上線了!
https://ithelp.ithome.com.tw/upload/images/20230903/20106071bd6i8FQYWi.png


當你完成到這裡,
你已經都架設成功了!!
接下來開始就是在你的Python Server開始加功能了www


上一篇
Python Discord Bot#2 - 使用後台建立應用程式
下一篇
Python Discord Bot#4 - 認識與新增.env設定檔
系列文
Python Discord Bot(DC機器人)31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
arguskao
iT邦新手 3 級 ‧ 2023-09-03 00:22:49

也可以先在colab測試嗎

看更多先前的回應...收起先前的回應...
KUI iT邦新手 4 級 ‧ 2023-09-03 00:40:31 檢舉

可以,剛剛我去試了一下,但內容需要有點變更


!pip install discord.py
!pip install nest_asyncio
# 導入 套件
import discord
import nest_asyncio

nest_asyncio.apply()

# intents
intents = discord.Intents.default()
# client
client = discord.Client(intents=intents)

# event 事件處理
@client.event
async def on_ready():
  print(f"「{client.user}」已登入")

if __name__ == "__main__":
  client.run("你的Bot Token")
arguskao iT邦新手 3 級 ‧ 2023-09-03 00:51:10 檢舉

謝謝您!果然成功了,不過我比較有疑問的是應該vscode和colab程式應該一樣,這裡有區別的原因是?

KUI iT邦新手 4 級 ‧ 2023-09-03 01:24:46 檢舉

我在第一次嘗試時,
我遇到了

RuntimeError: asyncio.run() cannot be called from a running event loop

的錯誤,是我在vscode開發中沒有遇過的,
其實這個也很正常,
不同的開發環境,
有時伺服器的運行方式會導致不同結果,
而我在網路上查詢,google Calab 好像在很多時候,不同開發套件都有遇到,
而他們共同的解決方式就是使用 nest_asyncio 來異步運行它的筆記本,或是用其他方式不讓Calab不使用GUI運行。

然後,其實我今天第一次知道Calab也是讓我學了一課wwww

arguskao iT邦新手 3 級 ‧ 2023-09-03 08:24:27 檢舉

我也是遇到這樣的錯誤,你要把這個寫入文章嗎?

我要留言

立即登入留言